Extensible software applications support the use of extensions (e.g., add-in, snap-in, theme, skin, plug-in) to extend the capabilities of the software application. An extension provides a software application with additional features and functions that are not present in the software application. Additionally, an extension may provide the author of the extension (e.g., third party developer) with the ability to define customizations tailored to the preference of the extension's author. For example, an extension may be used to add or change the appearance of a graphical user interface to include icons, buttons, menus, colors, and other graphical elements preferred by the extension's author.
Extensions are beneficial for software applications where the cost of maintaining and upgrading the software application is costly. Most extensions are typically provided by a third party other than the author of the software application. By allowing developers to incorporate their extensions into a software application, the life of the software application may be extended in an economical manner.